package com.xian.im.modules.im.core;

import com.xian.im.common.model.from.UserFrom;
import com.xian.im.common.model.vo.UserVo;
import com.xian.im.modules.im.entity.UserEntity;

import java.util.Collection;
import java.util.List;

/**
 * @program: xian-code
 * @description:
 * @author: liru.xian
 * @create: 2021-01-19 10:19
 **/
public interface IUserCoreService {

    /**
     *  创建用户
     * @param user
     * @return
     */
    UserVo createUser(UserFrom user);

    /**
     *  查询用户信息
     * @param userId
     * @return
     */
    UserVo find(Long userId);

    /**
     *  查询用户信息
     * @param account
     * @return
     */
    UserVo find(String account);

    /**
     *  查询用户信息
     * @param account
     * @return
     */
    UserEntity getUnique(String account);

    /**
     * 批量查询
     * @param ids
     * @return
     */
    List<UserVo> batchFindById(Collection ids);

    /**
     * 批量查询
     * @param ids
     * @return
     */
    List<UserVo> batchFindByAccount(Collection<String> ids);

    /**
     *  批量创建用户
     * @param users
     * @return
     */
    Boolean batchCreateUser(List<UserFrom> users);

    /**
     *  修改用户信息
     * @param user
     * @return
     */
    Boolean updateUserInfo(UserFrom user);

    /**
     * 修改用户密码
     * @param user
     * @return
     */
    Boolean updatePassword(UserFrom user);

    /**
     * 踢出在线用户
     */
    Boolean kickOut(UserFrom user);

    /**
     * 禁言
     */
    void mute(UserFrom user);

    /**
     *  移除禁言
     * @param user
     */
    void removeMute(UserFrom user);

    /**
     * 是否禁言
     */
    Boolean isMute(UserFrom user);

}
